from django import template
from django.urls import reverse, NoReverseMatch

register = template.Library()

@register.filter
def url_exists(url_name, args=None):
    """
    判断URL是否可解析
    :param url_name: URL名称（如 'admin:base_rawmodel_printone'）
    :param args: 传递给reverse的参数（如 [4]）
    :return: 可解析返回True，否则返回False
    """
    try:
        if args:
            # 处理带参数的URL（如 printone 需要传递object_id）
            reverse(url_name, args=args)
        else:
            # 处理不带参数的URL
            reverse(url_name)
        return True
    except NoReverseMatch:
        return False